package leetcode_cn;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;

/**
 * 任务分配最短时间 Task Scheduler
 * 任务调度器
 * @author briarbear
 * @blog https://briarbear.github.io
 * @date 2018-09-04 15:27
 */
public class LeastInterval {

    public int solution(char[] tasks,int n){
        int[] map = new int[26];
        for (char c : tasks) {
            map[c-'A']++;       //将任务保存在map数组中
        }
        Arrays.sort(map);      //任务执行完的时间，与任务名称无关，只与不同任务的个数相关
        int time = 0;
        while (map[25] > 0){
            int i = 0;
            while (i <= n){
                if (map[25] == 0) break;
                if (i < 26 && map[25-i] > 0)
                    map[25-i]--;
                time++;
                i++;
            }
            Arrays.sort(map);
        }

        return time;
    }


}
